package com.init.bootframe.system.dao;

import com.init.bootframe.system.vo.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface IUserDao {
    /**
     * 查询用户列表
     *
     * @param userVO
     * @return
     */
    public List<UserVO> findUserList(UserVO userVO);

    /**
     * 查询用户列表总数
     *
     * @param userVO
     * @return
     */
    public int findUserListCount(UserVO userVO);

    /**
     * 查询用户
     *
     * @param userVO
     * @return
     */
    public UserVO findUser(UserVO userVO);

    /**
     * 查询用户
     *
     * @param userVO
     * @return
     */
    public List<UserVO> findUsers(UserVO userVO);

    /**
     * 查询用户组织信息
     *
     * @param userOrgVO
     * @return
     */
    public List<UserOrgVO> findUserOrgList(UserOrgVO userOrgVO);

    /**
     * 查询用户所有菜单权限信息
     *
     * @param userVO
     * @return
     */
    public List<MenuVO> findUserPermissionsList(UserVO userVO);

    /**
     * 查询用户所有操作权限
     *
     * @param userVO
     */
    public List<ModuleVO> findUserModelList(UserVO userVO);

    /**
     * 查询用户角色信息
     *
     * @param userRoleVO
     * @return
     */
    public List<UserRoleVO> findUserRoleList(UserRoleVO userRoleVO);

    /**
     * 增加用户角色信息
     *
     * @param userRoleVO
     */
    public void addUserRole(UserRoleVO userRoleVO);

    /**
     * 删除用户角色信息
     *
     * @param userRoleVO
     */
    public void deleteUserRole(UserRoleVO userRoleVO);

    /**
     * list 查询
     *
     * @param userVO
     * @return
     */
    public List<UserVO> findList(UserVO userVO);

    /**
     * 总数查询（配合分页）
     *
     * @param userVO
     * @return
     */
    public int findListCount(UserVO userVO);

    /**
     * 添加
     *
     * @param userVO
     */
    public void insert(UserVO userVO);

    /**
     * 修改
     *
     * @param userVO
     */
    public void update(UserVO userVO);

    /**
     * 删除
     *
     * @param userVO
     */
    public void delete(UserVO userVO);

    /**
     * 批量list添加
     *
     * @param list
     */
    public void insertList(List<UserVO> list);

    /**
     * 添加组织
     */
    public void insertUserOrg(UserVO userVO);

    /**
     * 删除组织
     *
     * @param userVO
     */
    public void deleteUserOrg(UserVO userVO);

    /**
     * 解绑用户微信
     * @param userVO
     */
    public void cleanWechat(UserVO userVO);

    /**
     * 根据openid查询用户
     * @param userVO
     */
    public int openIdGetUser(UserVO userVO);

}
